<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8">

		<title>w0926_1_function</title>

		<script>
			//선언적 함수/ 익명함수
			/* 함수 ----------------------
			* 선언적 함수/익명함수
			* 매개변수없는,있는 함수, 리턴 값이 없는,있는 함수
			* 매개변수: number, boolean, string, object
			*/
			//1. 창 위치 이동하는 함수: winMove
			function winMove(dir) {
				alert(dir.btnDown.value);
				switch(dir.btnDown.value) {
				case 'down':
					window.moveBy(0, 50);
					// down용
					break;
				case 'up':
					window.moveBy(0, -50);
					// up용
					break;
				case 'right':
					window.moveBy(30, 0);
					// right용
					break;
				case 'left':
					window.moveBy(-30, 0);
					// left용
					break;
				}

			}

			//2. 창 크기 조절하는 함수: winResize()
			function winResize(w, h) {
				window.resizeBy(w, h);
			}

			//3. 제곱 구하는 함수: f(x)

			function f1() {
				alert(f(10));
			};
			function f(x) {
				return x * x;
			}

			//4. 가변인자 함수
			function f2() {
				var rtn = 0;
				for (var i in arguments) {
					rtn += arguments[i];
				}
				document.getElementById("result").innerHTML = rtn;
				//return rtn;
			}
			//id="result"에 결과 값 출력
			//rtn값 호출
			//alert(f2(1,2,3,4,5));

			// var res = rtn;
			// for(rtn=1; rtn<arguments.length;rtn++){
			// i = i+1;
			// }
			// //res+=(typeof arguments)+"" + arguments.length;
			//
			/* function 함수명(){
			* 	var len = arguments.length;
			* if(len==0){
			* 	//매개변수 값 없을 때 실행코드..
			* }else if(len==1){
			* 	//매개변수가 한 개 일 때 실행 코드..
			* 	}else{
			* //매개변수가 n개 일때 실행 코드
			}
			}*/

			//함수를 매개변수로 받는 함수 ---------------
			//함수를 매개변수로 받는 함수선언
			function callFun(f){
				f();
			}
			callFun(function(){alert('hi-');});
			
			function f3(){
				alert('1st경고창');
				return;
				alert('2nd경고창');
			}
			var s = f3();
			alert(typeof s+","+s);
			
		</script>
	</head>

	<body>
		<form name="frm1" id="frm1Id">

			<fieldset>
				<legend>
					함수-리턴
				</legend>
				<span id="result"></span>
				<input type="button" onclick="f3()" value="리턴" />
			</fieldset>

			<fieldset>
				<legend>
					가변인자 함수
				</legend>
				<span id="result"></span>
				<input type="button" onclick="f2()" value="가변인자함수" />
			</fieldset>

			<fieldset>
				<legend>
					연습
				</legend>
				1.confirm()메소드를 이용해 "게임 한 판 하실래요?"라고 물어본다.
				2.confirm()이 반환하는 값을 인수로하여 process()함수를 호출한다.
				process()함수에서는 인수로 들어온 값이 참이면 "ok.게임 시작합니다."를 출력하고
				거짓이면 "좋아요. 다음을 기약해요!"라고 출력한다.
			</fieldset>

			<fieldset>
				<legend>
					창 크기 조절
				</legend>
				<br/>
				<input type="button" onclick="window.resizeTo(400,400);" value="resizeTo()" />
				<input type="button" onclick="winResize(30,40)" value="resizeBy()" />
			</fieldset>

			<fieldset>
				<legend>
					창 위치 이동
				</legend>
				<!--익스플로러만 가능-->
				<button onclick="window.moveTo(200,200);">
					moveTo()
				</button>
				<input type="button" onclick="winMove(this.form)" value="down" name="btnDown" id="btnDown"/>
				<input type="button" onclick="winMove(this.value)" value="up" name="btn" id="btnUp"/>
				<input type="button" onclick="winMove(this.value)" value="right" name="btn" id="btnRight"/>
				<input type="button" onclick="winMove(this.value)" value="left" name="btn" id="btnLeft"/>
			</fieldset>

			<fieldset>
				<legend>
					return값 있는 함수
				</legend>
				<input type="button" onclick="f1()" value="제곱구하기" />
			</fieldset>

		</form>
	</body>
</html>

